Runtime analysis tools are commonly used in software development to evaluate the behavior of computer programs. Runtime analysis refers to the practice of understanding computer program behavior using data collected during execution of a computer program under test. Typically, program code is compiled using the runtime analysis tool. The tool instruments the computer program, referred to as the computer program under test, with additional code that can perform various monitoring tasks that work cooperatively with the runtime analysis tool itself. These monitoring tasks are able to detect various types of error conditions and “misbehaviors” of the computer program under test.
One type of misbehavior relates to improper memory accesses. An improper memory access can refer to an improper read of a memory location or an improper write to a memory location. Both sorts of activities can result in a severe error condition such as a crash or failure of the computer program under test. For example, an improper read, such as reading a value from uninitialized memory, often results in a crash. This is particularly true when the value read from memory is used as a pointer. An improper write to a memory location can result in an error condition since data needed by the program is effectively lost or overwritten with other data.